package zorm

type DBBASE interface {
	First(uid *SUser, model interface{}, domain string, context map[string]interface{}) error
	Count(uid *SUser, model interface{}, domain string, context map[string]interface{}) (int, error)
	Query2(uid *SUser, model interface{}, domain string, context map[string]interface{}) ([]interface{}, error)
	//功能 进行数据查询
	//参数
	//     table 	使用的是哪个表(已经注册的表)
	//     uid   	SUser中的Id
	//     domain 	格式化搜索条件
	//     fields   返回的字段列表
	//     orderby  排序
	//     limit    页大小
	//     offset   起始位置
	//     context  其它数据,配合搜索
	//返回 行数据
	//注意
	Query(uid *SUser, model interface{}, domain string, fields []string, orderby []string, offset int, limit int, context map[string]interface{}) ([]interface{}, error)

	UpdateAny(strptr interface{}, fields []string) (int, error)

	//功能 进行数据更新
	//参数
	//     table 表名
	//     args  更新的字段  字段名必须为结构中字段
	//     ids   更新哪个ID，如果为空，则更新所有
	//返回
	//     int  影响多少字段
	//     error 出错信息
	Update(uid *SUser, strptr interface{}, fields []string, ids ...int64) (int, error)

	//功能 进行数据更新
	//参数
	//     table 表名
	//     args  删除的条件  字段名必须为结构中字段
	//     ids   更新哪个ID，如果为空，则更新所有
	//返回
	//     int  影响多少字段
	//     error 出错信息
	Delete(uid int, strptr interface{}, ids ...int) (int, error)

	//功能 进行数据更新
	//参数
	//     table 表名
	//     obj   更新的结构
	//返回
	//     error 出错信息
	//注意
	//     obj中的ID将自动赋值为最新值
	Insert(uid *SUser, obj interface{}, context map[string]interface{}) error

	//功能 根据指定列搜索数据，如果存在，则更新，如果不存在，则创建
	//注意 更新时，可能会更新多个数据列
	InsertOrUpdate(uid *SUser, obj interface{}, compfields []string, updatefields []string, context map[string]interface{}) (int, error)
}
